import { createApp } from 'vue';
import * as Sentry from "@sentry/vue";

import ArcoVue from '@arco-design/web-vue';
import ArcoVueIcon from '@arco-design/web-vue/es/icon';
import globalComponents from '@/components';
import { sendMessageToDingTalk } from '@/utils/Ding';

import router from './router';
import store from './store';
import i18n from './locale';
import directive from './directive';
import App from './App.vue';

import '@arco-design/web-vue/dist/arco.css';
import '@/assets/style/global.less';
import '@/api/interceptor';


const app = createApp(App);

// 使用 ArcoVue 组件库
app.use(ArcoVue);
// 使用 ArcoVueIcon 图标库
app.use(ArcoVueIcon);
// 使用路由
app.use(router);
// 使用状态管理
app.use(store);
// 使用国际化
app.use(i18n);
// 使用全局组件
app.use(globalComponents);
// 使用自定义指令
app.use(directive);

Sentry.init({
    app,
    dsn: "https://2c00e776ba7f14371662d2f8255314d5@o4509070438760448.ingest.us.sentry.io/4509070439874560",
    integrations: [
    ],
    tracesSampleRate: 1.0,
    beforeSend(event) {
        // 在这里可以对事件进行处理并返回修改后的事件对象
        console.log('Sentry事件:', event.exception.values);
         // 在这里可以对事件进行处理并返回修改后的事件对象
         console.log('Sentry事件:', event.exception.values);
         // 遍历event.exception.values并将每个item.value写成markdown格式
         const markdownMessages = event.exception.values.map(item => `### Error Message\n${item.value}`);
         markdownMessages.forEach(async (message) => {
           const messageData = {
             msgtype: 'markdown',
             markdown: {
               title: 'Sentry事件错误信息',
               text: message
             },
             at: {}
           };
           sendMessageToDingTalk(messageData);
        })
        return event
    },
    tracePropagationTargets: ["http://localhost:8089/dish/list/1/10", "localhost", /^localhost:8089/],
}); 
  
// 屏蔽 Vue 3 的警告信息
app.config.warnHandler = () => null;
// 载应用
app.mount('#app');
    